package demo.thread;

public class YieldDemo {
	public static void main(String[] args) {	
		for (int i = 0; i < 3; i++) {
			Thread producer = new Producer();
			Thread consumer = new Consumer();

			producer.setPriority(Thread.MAX_PRIORITY); // Max Priority ，理论上优先级高的线程会优先执行，但并不要依赖此方法，它并不能保证这一点
			consumer.setPriority(Thread.MIN_PRIORITY); // Min Priority
			producer.start();
			consumer.start();
		}
	}
}

class Producer extends Thread {
	public void run() {
		for (int i = 0; i < 5; i++) {
			System.out.println("生产者 : " + i);
			//生产线程让步,告诉虚拟机它乐意让其他线程占用自己的位置。这表明该线程没有在做一些紧急的事情。这仅是一个暗示
			//它仅能使一个线程从运行状态转到可运行状态，而不是等待或阻塞状态
			//Thread.yield();
		}
	}
}

class Consumer extends Thread {
	public void run() {
		for (int i = 0; i < 5; i++) {
			System.out.println("消费者 : " + i);
			Thread.yield();
		}
	}
}